package edu.cmu.cs211.bacon.util;

import java.util.List;

/**
 * A directed graph search interface.
 * 
 * V and E are the vertex and edge types for the graph that we will be searching.
 * That is, this function returns a list of edges (List<E>), and takes a graph,
 * a start vertex, and an ending vertex.
 */
public interface GraphSearch {
	/**
	 * 
	 * @param <V> The type for the vertices in the graph.
	 * @param <E> The type for edges in the graph.
	 * @param g The graph in which to search
	 * @param start The starting vertex.
	 * @param finish The ending vertex.
	 * @return The list of edges in the path, or null if there is no path.
	 */
	public <V,E extends Edge<V>> List<E> shortestPath(Graph<V,E> g, V start, V finish);	
	
}